// 方法1：随机从原数组抽取一个元素，加入到新数组
function randomSort1(arr) {
  if (!Array.isArray(arr) || arr.length <= 1) {
    return arr;
  }
  const result = [];
  while (arr.length > 0) {
    // 获取0~索引最大值的随机数
    let randomIndex = Math.floor(Math.random() * arr.length);
    result.push(arr[randomIndex]);
    // 删除原数组中元素，从randomIndex开始，删除1个
    arr.splice(randomIndex, 1);
  }
  return result;
}

// 方法2在原数组的基础上随机交换元素
function randomSort2(arr) {
  if (!Array.isArray(arr) || arr.length <= 1) {
    return arr;
  }
  let len = arr.length;
  for (let index = 0; index < len; index++) {
    // 获取index后面的索引号
    randomIndex = Math.floor(Math.random() * (len - index) + index);
    // 交换元素
    [arr[randomIndex], arr[index]] = [arr[index], arr[randomIndex]];
  }
  return arr;
}

const arr = [5, 4, 3, 2, 1];
// console.log(randomSort1(arr));
console.log(randomSort2(arr));